package com.ciaojian.core.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ciaojian.core.mapper.OrderCommentMapper;
import com.ciaojian.core.model.OrderComment;

import java.util.Date;

/**
 * <p>
 * 订单评价表 服务类
 * </p>
 *
 * @author ${author}
 * @since 2020-08-19
 */
public abstract class OrderCommentService extends ServiceImpl<OrderCommentMapper, OrderComment> {
    /**
     * 统计评价数
     *
     * @param storeId   门店ID
     * @param workerId  发型师ID
     * @param score     评分
     * @param beginDate 开始时间
     * @param endDate   结束时间
     * @return 数量
     */
    public Integer countComment(Integer storeId,
                                Integer workerId,
                                Integer score,
                                Date beginDate,
                                Date endDate) {
        return this.lambdaQuery()
                .eq(storeId != null, OrderComment::getStoreId, storeId)
                .eq(workerId != null, OrderComment::getWorkerId, workerId)
                .eq(OrderComment::getIsSum,true)
                .eq(OrderComment::getScore, score)
                .between(OrderComment::getAddTime, beginDate, endDate)
                .count();
    }

    /**
     * 校验订单是否已评价
     *
     * @param orderId 订单 id
     * @return 已评价返回 true
     */
    public abstract Boolean notCommented(Integer orderId);

    /**
     * 分页查询评价
     *
     * @param userId   用户ID
     * @param store    店面 id
     * @param type     评论类型 全部 0,有图 9,满意度 5 4 3 2 1
     * @param worker   发型师 id
     * @param pageNo   页码
     * @param pageSize 页码数量
     * @return 分页后的评价列表
     */
    public abstract Page<OrderComment> page(Integer userId, Integer store, Integer type, Integer worker, Integer pageNo, Integer pageSize);
}
